💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    자료형과 문자열 | ✅저자: 이유정(박사)

    자료형과 기본자료형

    🔹 자료형이란?

    자료형(Data Type)은 컴퓨터가 처리하는 데이터의 종류를 말합니다. 
    컴퓨터는 데이터의 형태에 따라 저장하는 방식과 처리하는 방법이 다르기 
    때문에, 각 데이터가 어떤 형태인지 구분할 필요가 있습니다.
    
    ◽ 대표적인 파이썬의 기본 자료형
    분류 자료형 설명 예시 비고
    숫자형 int 정수형 (소수점 없음) 25, -10, 1000000 나이, 개수 등 사용
    float 실수형 (소수점 있음) 3.14, -0.5, 175.5 키, 온도 등 사용
    complex number 복소수 (실수부 + 허수부) 2 + 3j, 1 - 4j 과학 계산 등
    텍스트형 str 문자열 (텍스트 데이터) "Hello", '파이썬' 따옴표로 감쌈
    논리형 bool 불리언 (참/거짓) True, False 조건문에 자주 사용
    특수형 NoneType 값이 없음 None 초기화 시 자주 사용
    컬렉션형 list 순서 있고, 변경 가능 [1, 2, 3], ["a", "b"] 각진괄호 [] 사용
    tuple 순서 있고, 변경 불가 (1, 2), ("a", "b") 둥근괄호 () 사용
    dict 키-값 쌍으로 저장 {"이름": "홍길동", "나이": 25} 구부렁괄호 {}, 키:값 형식
    set 중복 없는 값들의 모음 {1, 2, 3, 3}{1, 2, 3} 순서 없음, 중괄호 사용
    💬 보충설명:
    ( ) :  ==Round brackets==  ~~Parentheses~~ 소괄호
    { } :  ==Curly braces== 또는 ~~Braces~~  중괄호
    [ ] : ==Square brackets== ~~Brackets~~ 대괄호
    

    ◽ 숫자형 (Numeric Types) ◾ 정수 (int) 소수점이 없는 정수형 숫자예요.
    예: 나이, 개수, 점수 등

    </> 예시코드:

    age = 25
    temperature = -5
    
    print(age)
    print(temperature)
    

    🖨️ 출력결과:

    25
    -5
    

    ◾ 실수 (float) 소수점이 있는 숫자예요.
    예: 키, 원주율, 온도 등

    </> 예시코드:

    PI = 3.14159 # 상수
    height = 175.5
    print(PI)
    print(height)
    

    🖨️ 출력결과:

    3.14159 
    175.5
    

    ◾ 복소수 (complex number) 복합적인 수라는 뜻으로 실수 + 허수(j)로 이루어진 숫자예요. 허수는 실수로 표현할 수 없는 수를 말합니다. 복소수는 공학, 전기공학, 물리학 등 다양한 분야에서 파동, 회전, 벡터 등을 표현할 때 유용하게 사용됩니다.

    </> 예시코드:

    z = 2 + 3j
    print(z)
    print(z.real)  # real part 실수부: 일반적인 숫자
    print(z.imag)  # imaginary part 허수부: 제복하면 음수가 되는수 
    # i또는 j는 √-1을 의미하는 허수 단위(상식으로 알아두기 활용은 안함)
    

    🖨️ 출력결과:

    (2+3j)
    2.0
    3.0
    

    ◽ 문자열 (str) 글자, 문장 같은 텍스트 데이터를 담아요.
    작은따옴표(') 또는 큰따옴표(")로 감싸서 사용해요.

    </> 예시코드:

    name = "홍길동"
    greeting = '안녕하세요!'
    print(name)
    print(greeting)
    

    🖨️ 출력결과:

    홍길동
    안녕하세요!
    

    ◽ 불리언 (bool) 참(True) 또는 거짓(False)을 나타내는 자료형이에요.
    조건문, 판단 로직 등에 자주 사용돼요.

    </> 예시코드:

    is_student = True
    has_passport = False
    print(is_student)
    print(has_passport)
    

    🖨️ 출력결과:

    True
    False
    

    ◽ None 타입 (NoneType) "아직 값이 없다"는 특별한 의미를 가집니다.
    변수 초기화 시 자주 사용돼요.

    </> 예시코드:

    result = None
    print(result)
    

    🖨️ 출력결과:

    None
    

    🧾 보충설명: result =0 , result = None은 다르다.
    0부터 시작, 값이 없다.


    ◽ 컬렉션 자료형 (Collection Types) ◾ 리스트 (list) 순서가 있고, 값을 ==변경 가능==한 자료 모음입니다.
    각진 괄호 []로 만듭니다.

    </> 예시코드:

    fruits = ["사과", "바나나", "체리"]
    print(fruits)
    

    🖨️ 출력결과:

    ['사과', '바나나', '체리']
    

    ◾ 튜플 (tuple) 순서가 있지만, 값을 ==변경할 수 없는== 자료형입니다.
    둥근괄호 ()로 만듭니다.

    </> 예시코드:

    point = (10, 20)
    print(point)
    

    🖨️ 출력결과:

    (10, 20)
    

    ◾ 딕셔너리 (dict) ==키-값== 쌍으로 이루어진 자료형입니다.
    구부렁괄호 {}와 콜론 :으로 표현합니다.

    </> 예시코드:

    person = {"이름": "홍길동", "나이": 25, "직업": "학생"}
    print(person)
    

    🖨️ 출력결과:

    {'이름': '홍길동', '나이': 25, '직업': '학생'}
    

    ◾ 집합 (set) ==중복을 허용하지 않는== 자료 모음입니다.
    구부렁괄호 {}를 사용하지만, 순서가 없습니다.

    </> 예시코드:

    unique_numbers = {1, "수영", 3, 3, 4, "수영", 5, 5, 5}
    print(unique_numbers)
    

    🖨️ 출력결과: set은 중복 제거(필터링)은 탁월하지만 순서는 전혀 보장하지 않음

    {1, 3, 4, 5, '수영'}
    

    💡 꿀팁: 미리 알아두기 리스트는 수정 가능 (fruits[0] = 100 가능) 튜플은 수정 불가 (coordinates[0] = 100 하면 오류) 딕셔너리는 키(Key)를 이용해서 값에 접근 (person['a']는 1 반환)


    🔹 자료를 알아야 하는 이유

    프로그래밍에서 데이터의 종류, 즉 데이터 타입을 명확히 이해하는 것은
    매우 중요합니다. 데이터 타입에 따라 수행할 수 있는 연산과 처리 방식
    이 달라지기 때문입니다.
    

    1️⃣ 올바른 도구 선택하기 일상생활에서 각 작업에 맞는 도구를 사용하듯이, 프로그래밍에서도 각 데이터에 맞는 자료형을 선택해야 합니다.

    🐣 예시: 물을 담으려면 컵이 필요하고, 음식을 자르려면 칼이 필요합니다. 마찬가지로, 숫자를 계산하려면 숫자형(int, float)이 필요하고, 이름을 저장하려면 문자열(str)이 필요합니다.

    </> 예시코드: 잘못된 자료형 사용

    price = "10000" # 문자열로 저장 
    discount = price - 1000 # 오류 발생! 문자열에서 숫자를 뺄 수 없음
    
    # 출력결과
    TypeError: unsupported operand type(s) for -: 'str' and 'int'
    

    </> 예시코드: 올바른 자료형 사용

    price = 10000 # 숫자로 저장 
    discount = price - 1000 # 9000으로 정상 계산
    
    # 출력결과
    9000
    

    2️⃣ 효율적인 메모리 사용 각 자료형은 컴퓨터 메모리를 다르게 사용합니다. 적절한 자료형을 선택하면 메모리를 효율적으로 사용할 수 있습니다.

    🐣 예시: 작은 가방에 꼭 필요한 것만 담는 것과 같습니다. 1부터 10까지 표현할 때는 큰 숫자를 저장할 수 있는 공간보다 작은 공간이 효율적입니다.


    3️⃣ 가능한 작업 파악하기 자료형마다 할 수 있는 작업(연산)이 다릅니다.

    🐣 예시: 종이는 접을 수 있지만, 유리는 접을 수 없습니다. 문자열은 합치거나 반복할 수 있지만, 나눗셈은 할 수 없습니다.

    </> 예시코드: 문자열끼리는 더할 수 있음

    이름 = "홍" + "길동" # "홍길동"
    print(이름)
    
    # 출력결과
    홍길동
    

    </> 예시코드: 하지만 문자열과 숫자는 더할 수 없음

    결과 = "나이: " + 25 # 오류 발생!
    print(결과)
    
    # 출력결과:
    TypeError: can only concatenate str (not "int") to str
    

    4️⃣ 오류 예방하기 올바른 자료형을 사용하면 많은 오류를 미리 방지할 수 있습니다.

    🐣 예시: 물이 담긴 컵을 쏟으면 바닥이 젖지만, 디지털 기기를 쏟으면 고장납니다. 그렇듯, 프로그램에서도 잘못된 자료형을 사용하면 예상치 못한 결과가 나올 수 있습니다.

    </> 예시코드: 올바른 코드

    사용자_입력 = input("나이를 입력하세요: ") # 입력값은 문자열로 들어옴
    미래_나이 = int(사용자_입력) + 10 # 형변환을 통해 35로 정상 계산
    print(미래_나이)
    
    # 출력결과
    예시: 30
    

    </> 예시코드: 오류가 발생할 수 있는 코드

    사용자_입력 = input("나이를 입력하세요: ") # 사용자가 "25"라고 입력 
    미래_나이 = 사용자_입력 + 10 # 오류 발생! "25" + 10은 불가능
    print(미래_나이)
    
    # 출력결과
    TypeError: can only concatenate str (not "int") to str
    

    5️⃣ 데이터 조직화하기 복잡한 정보를 체계적으로 관리하려면 적합한 자료형이 필요합니다.

    🐣 예시: 슈퍼마켓에서 물건은 종류별로 다른 진열대에 정리됩니다. 프로그래밍에서도 관련 데이터를 적절히 구조화하면 관리가 쉬워집니다.

    </> 예시코드:

    # 학생 정보 관리 
    # 리스트 사용 
    student1 = ["홍길동", 20, "A반", True] # 이름, 나이, 반, 출석여부 
    
    # 딕셔너리 사용 (더 명확함) "key":"value"구조
    student2 = { 
    	"이름": "홍길동", 
    	"나이": 20, 
    	"반": "A반", 
    	"출석여부": True 
    }
    

    🖨️ 출력결과: 리스트 데이터 꺼내기 및 출력결과

    student1 = ["홍길동", 20, "A반", True]
    
    print("이름:", student1[0])
    print("나이:", student1[1])
    print("반:", student1[2])
    print("출석여부:", student1[3])
    
    # 출력결과
    이름: 홍길동
    나이: 20
    반: A반
    출석여부: True
    

    ✅ 인덱스의 동작 방식: 번호를 찾아갑니다.

    student1[0] -> "홍길동" (str)
    student1[1] -> 20      (int)
    student1[2] -> "A반"   (str)
    student1[3] -> True    (bool)
    

    🖨️ 출력결과: 딕셔너리 데이터 꺼내기 및 출력결과

    student2 = { 
    	"이름": "홍길동", 
    	"나이": 20, 
    	"반": "A반", 
    	"출석여부": True 
    }
    print("이름:", student2["이름"])
    print("나이:", student2["나이"])
    print("반:", student2["반"])
    print("출석여부:", student2["출석여부"])
    
    # 출력결과
    이름: 홍길동
    나이: 20
    반: A반
    출석여부: True
    

    ✅ 딕셔너리의 동작 방식:

    student2["이름"] → 파이썬이 메모리에서 "이름"이라는 주소를 찾아감
    → 그 주소에 저장된 값 "홍길동"을 꺼내서 출력함
    

    6️⃣ 프로그램의 확장성 높이기 처음부터 적절한 자료형을 사용하면 나중에 프로그램을 확장하기 쉽습니다.

    🐣 예시: 처음부터 튼튼한 기초를 다져야 건물을 높이 올릴 수 있습니다. 자료형을 제대로 설계하면 프로그램도 더 크게 성장할 수 있습니다.


    🔹 자료형 확인하기

    type() 함수를 사용하여 무슨 자료형이지 확인할수 있어요.
    
    	# 정수형 (Integer)
    	print(type(10))        
    	출력결과: <class 'int'>
    	
    	# 실수형 (Float)
    	print(type(0.2))       
    	출력결과: <class 'float'>
    	
    	# 문자열 (String)
    	print(type("hi"))      
    	출력결과: <class 'str'>
    	
    	# 불리언 (Boolean)
    	print(type(True))      
    	출력결과: <class 'bool'>
    	
    	# 리스트 (List)
    	print(type([1, 2, 3]))  
    	출력결과: <class 'list'>
    	
    	# 딕셔너리 (Dictionary)
    	print(type({"name": "Eunice", "age": 30}))  
    	출력결과: <class 'dict'>	
    

    📝 문제 1] 숫자 7을 변수 a에 저장한 뒤, a의 자료형을 출력하면 어떤 자료형이 나오는지 생각후 확인해보세요. (스스로 문제를 만들어보세요.)

    a = 7
    print(type(a))
    

    📝 문제 2] 문자열 "Python"을 변수 b에 저장한 뒤, b의 자료형을 출력하면 어떤 자료형이 나오는지 생각후 확인해보세요.

    b = "Python"
    print(type(b))
    

    📝 문제 3] 숫자 1, 2, 3을 담은 리스트를 변수 c에 저장하고, c의 자료형을 출력하면 어떤 자료형이 나오는지 생각후 확인해보세요.

    c = [1, 2, 3]
    print(type(c))
    

    🖨️ 출력결과:

    <class 'list'>
    

    📝 문제 4] 다음은 수강 신청한 학생들의 이름 목록입니다. 같은 이름이 여러 번 들어갈 수 있습니다.

    students = ["민수", "지영", "수빈", "민수", "영희", "지영", "철수", "수빈", "영희"]

    1. 중복된 이름을 제거하세요.
    2. 중복 제거된 이름들을 리스트로 변환하세요.
    3. "지영"을 출력하고, 리스트에서 몇 번 인덱스에 있는지 출력하세요.
    4. 정리된 리스트를 출력하세요.

    ✅ 정답 및 출력결과

    students = ["민수", "지영", "수빈", "민수", "영희", "지영", "철수", "수빈", "영희""민수", "지영", "수빈","지영", "수빈", "민수", "영희"]
    unique_students = set(students)
    student_list = list(unique_students)
     
    print("지영:", "지영")
    print("인덱스:", student_list.index("지영"))
    print(student_list)
    
    # 출력결과
    지영: 지영
    인덱스: 5
    ['영희', '수빈', '영희민수', '철수', '민수', '지영']
    

    ❓ 그러나 단점은 매번 인덱스가 변경된다. 여기까지가 정답

    💡 해결 방법 </> 코드:

    # 리스트로 변환 + 정렬 (가나다순 고정)하는 함수를 사용한다.
    student_list = sorted(list(unique_students))
    
    # 출력결과
    지영: 지영
    인덱스: 4
    ['민수', '수빈', '영희', '영희민수', '지영', '철수']
    

    문자열 만들기

    🔹문자열(String)이란?

    String(문자열)은 글자들을 나열한 데이터로 작은 따옴표(' ') 또는 
    큰 따옴표(" ")로 감싸서 표현합니다.
    글자나 문장을 컴퓨터가 기억하려면 따옴표로 감싸야 해요.
    

    🧾 보충설명: 영어의 정식 명칭은 double 또는 single quotation marks라고 하나 현업에서는 짧게 큰따옴표(Double Quotes), 작은따옴표(Single Quotes)라고 부르며 둘다 문자열입니다. 똑같은 기능을 해요.

    </> 예시코드1 : 기본출력

    message = "Hello, World!" 
    print(message)
    
    # 출력결과:
    Hello, World!
    

    🔍 해설: 변수를 만들어서 문자열을 저장하고, print()로 출력하는 기본 방법이에요.


    </> 예시코드2 : 직접 문자열 출력

    print('Python is amazing.')
    
    # 출력결과:
    Python is amazing.
    

    🔍 해설: 굳이 변수를 만들지 않고, print() 안에 바로 문자열을 넣어도 출력할 수 있어요.


    </> 예시코드3 : 문자열 이어붙이기 (Concatenation)

    first = "I love "
    second = "Python programming!"
    print(first + second)
    
    # 출력결과:
    I love Python programming!
    

    🔍 해설: + 연산자를 사용해서 문자열을 이어붙여 출력할 수 있어요. (띄어쓰기 주의!)


    </> 예시코드4 : 문자열과 변수 함께 출력하기

    language = "Python"
    print("I am learning", language)
    
    # 출력결과:
    I am learning Python 
    

    🔍 해설: ,를 사용하면 띄어쓰기가 자동으로 추가돼서 여러 값을 한번에 출력할 수 있어요.


    </> 예시코드5 : f-string 사용하기 (현업에서도 많이 사용!)

    language = "Python"
    print(f"I am learning {language} programming!")
    
    # 출력결과:
    I am learning Python programming!
    
    🧐 실제 장고에서 활용되는 f-string 방식


    📝 문제 1] 다음 변수들을 이용하여 아래 조건을 만족하는 문장을 출력하세요.

    name = "지민" age = 25 hobby = "사진 찍기"

    [조건]

    1. 이름은 그냥 문자열로 직접 출력
    2. 나이는 변수로 출력 (print 함수에 직접)
    3. 취미는 문자열 + 변수 이어붙이기로 출력
    4. 마지막 문장은 f-string으로 "지민은 25살이고, 사진 찍기를 좋아합니다." 형식으로 출력

    🖨️ 출력결과는 다음과 같습니다.

    이름: 지민 # 1번 조건
    나이: 25  # 2번 조건
    취미: 사진 찍기 # 3번 조건
    지민은 25살이고, 사진 찍기를 좋아합니다. # 4번 조건
    

    ✅ 정답 코드:

    name = "지민"
    age = 25
    hobby = "사진 찍기"
    
    print("이름: 지민")                   # 1. 문자열 직접 출력
    print("나이:", age)                  # 2. 변수 직접 출력
    print("취미: " + hobby)              # 3. 문자열 이어붙이기
    print(f"{name}{age}살이고, {hobby}를 좋아합니다.")  # 4. f-string
    

    🔹문자열 내부에 따옴표 넣기 (String inside String)

    큰따옴표 안에 작은따옴표를 넣거나,작은따옴표 안에 큰따옴표를 넣으면
    문자열 안에 따옴표를 자연스럽게 표현할 수 있어요.
    

    </> 예시코드: 큰따옴표로 감싸고, 안에 작은따옴표 넣기

    quote = "She said 'Hi'" # 바깥쪽에 큰따옴표와 안쪽에 작은 따옴표
    print(quote)
    
    # 출력결과:
    She said 'Hi'
    

    📝문제] 따옴표가 섞인 인용문을 출력 결과와 같이 작성하세요. He said, "It's a beautiful day," and smiled. 단, 따옴표와 연결연산자만 사용해야 합니다.

    print("He said," + '"' + "It" + "'s a beautiful day" + '," and smiled.' )
    

    🔹이스케이프 문자 사용해 문자열 만들기

    이스케이프 문자(Escape Character)는 문자열 안에서 특별한 기능을 
    하게 만드는 기호예요.  
    보통 `\` (백슬래시)를 먼저 쓰고, 그 다음에 특수 문자를 붙여 
    사용합니다.
    

    ✨ 쉽게 설명하면 이스케이프 문자는 그냥 글자처럼 보이지만, 컴퓨터에게 "특별한 행동을 해!"라고 알려주는 비밀 신호에요.

    ◽ 주요 이스케이프 문자 종류
    이스케이프 문자 ........ 기능 설명 해석
    \n 줄바꿈 (New Line) 엔터 키 누른 것처럼 줄을 바꿔줘요
    \t 탭 (Tab) 키보드 탭 키처럼 공간을 띄워줘요
    \\ 백슬래시 출력 (Backslash) \ 자체를 글자로 출력하고 싶을 때 사용해요

    </> 예시코드: \n 줄바꿈(New Line)

    print("안녕하세요.\n반갑습니다.")
    

    🖨️ 출력결과:

    안녕하세요.
    반갑습니다.
    

    🔍 해설: \n을 쓰면 "여기서 줄을 바꿔라" 라는 뜻이에요.
    그래서 "안녕하세요."가 출력된 뒤, 줄이 바뀌고 "반갑습니다."가 새 줄에 출력돼요.


    </> 예시코드: \t 탭(Tab)

    print("Python\tis\teasy!")
    

    🖨️ 출력결과:

    Python  is      easy!
    

    🔍 해설: Python → 6글자 첫 번째 \t → 6 → 8이 될 때까지 2칸 띄움 is → 2글자 → 현재 커서 위치는 10 두 번째 \t → 10 → 다음 탭 위치인 16까지 6칸 띄움 easy! → 출력 시작 위치는 16

    `\t`는 단순히 일정한 공백 수를 넣는 게 아니라,  
    "다음 8칸 단위 위치" 까지 커서를 이동시키는 특수 문자입니다.
    

    </> 예시코드: \\ 백슬래시 자체 출력(Backslash)

    print("경로는 C:\\Users\\username 입니다.")
    

    🖨️ 출력결과:

    경로는 C:\Users\username 입니다.
    

    🔍 해설: \는 특별한 기능을 가진 문자라서
    그냥 \ 하나만 쓰면 오류가 나거나 다른 기능을 하려고 해요.
    그래서 \를 글자 그대로 출력하려면 \\ 두 번 써야 해요.

    💡 꿀팁: 만약 이런 코드가 있다면? 이렇게 출력되요.

    print("A\nB\nC") A <br>B <br>C
    print("A\tB\tC") A (탭 간격) B (탭 간격) C
    print("C:\\Program Files\\") C:\Program Files\

    🔹 여러 줄 문자열 만들기 (Multi-line String)

    여러 줄에 걸친 문자열을 만들 때는 
    '''내용''' 또는 """내용"""처럼 3개의 따옴표를 사용해요.
    여러 줄 문장을 한번에 적고 싶을 때, 세 개짜리 따옴표로 묶으면 
    됩니다.
    
    ◽ 여러 줄 문자열 vs 주석문 차이
    항목 여러 줄 문자열 (''' 또는 """) 주석 (#, '''...''' 문서용도)
    용도 문자열 데이터를 여러 줄로 작성할 때 사용 코드 설명, 비활성화 처리 등 실행에 포함되지 않는 설명
    실행 시 포함 ✅ 포함됨 (문자열로 인식됨) ❌ 실행 시 무시됨
    사용 기호 ............... ''' ... ''' 또는 """ ... """ #, 또는 때로는 ''' ... ''' (문서 주석)로 사용
    출력 여부 출력하면 화면에 표시됨 주석은 아무 것도 출력되지 않음

    </> 예시코드:

    # 이건 한 줄짜리 주석입니다. 실행되지 않아요.
    
    '''
    이건 여러 줄 주석처럼 보일 수 있지만
    실제로는 문자열입니다.
    출력하지 않으면 아무 일도 안 생기지만,
    코드에 "남아 있는 데이터"입니다.
    '''
    
    # 여러 줄 문자열 (실제로 출력함)
    message = """안녕하세요.
    여기는 여러 줄 문자열입니다.
    줄바꿈이 그대로 적용됩니다."""
    
    print(message)
    

    </> 예시코드: 여러 줄 문장 만들기

    text = """
    여러 줄로
    출력됩니다.
    정말 신기하죠?
    """
    print(text)
    

    🖨️ 출력결과:

    여러 줄로
    출력됩니다.
    정말 신기하죠?
    

    🔍 해설: 줄을 바꿔서 입력한 그대로 출력돼요. (줄바꿈이 자동으로 포함됨)


    </> 예시코드: 여러 줄 설명 작성하기

    description = '''이것은
    여러 줄 주석처럼
    사용할 수도 있습니다.'''
    print(description)
    

    🖨️ 출력결과:

    이것은
    여러 줄 주석처럼
    사용할 수도 있습니다.
    

    🔍 해설: '''를 쓰면 코드 설명처럼 여러 줄 텍스트를 쉽게 작성할 수 있어요.


    </> 예시코드: 첫째 줄, 둘째 줄, 셋째 줄 출력하기

    message = """첫째 줄
    둘째 줄
    셋째 줄"""
    print(message)
    

    🖨️ 출력결과:

    첫째 줄
    둘째 줄
    셋째 줄
    

    🔍 해설: 줄바꿈 문자를 따로 안 써도, 여러 줄로 작성한 그대로 출력돼요!


    🔹 줄바꿈 없이 문자열 만들기

    코드를 여러 줄로 나누어 써도 실제로는 하나의 긴 문자열이 됩니다. 
    ( ) 괄호를 이용해 이어붙여요.
    

    </> 예시코드: 긴 문장을 두 줄로 나누기

    long_string = (
        "This is the first part "
        "and this is the second part."
    )
    print(long_string)
    

    🖨️ 출력결과:

    This is the first part and this is the second part.
    

    🔍 해설: 줄을 나눠서 코드를 작성했지만, 실제로는 한 줄로 연결돼서 출력돼요. 튜플데이터가 아니다. 튜플 데이터는 콤마로 구분한다.


    문자열 연산자

    🔹 문자열 연결 연산자 +

    두 문자열을 이어붙여서 하나의 문자열을 만드는 연산자예요.
    

    </> 예시코드:

    "Hello, " + "Python!"  # 'Hello, Python!'
    

    🖨️ 출력결과:

    Hello, Python!
    

    🔹 문자열 반복 연산자 *

    문자열을 지정한 횟수만큼 반복하여 새로운 문자열을 만듭니다.
    

    </> 예시코드:

    "Hi! " * 3  
    

    🖨️ 출력결과:

    Hi! Hi! Hi! 
    

    🔹 문자열 선택 연산자(인덱싱) []

    문자열(String)은 글자 하나하나가 순서(번호, index)를 가지고 있어요.
    파이썬에서는 인덱스 번호가 0부터 시작합니다.
    글자마다 번호를 붙여서, 그 번호로 특정 글자를 뽑아낼 수 있어요!
    

    </> 예시코드:

    word = "Python" 
    print(word[0])   # 첫 번째 글자
    print(word[3])   # 네 번째 글자
    print(word[-1])  # 마지막 글자
    

    🖨️ 출력결과:

    P
    h
    n
    

    🔹 문자열 범위 선택 연산자(슬라이싱) [:]

    문자열에서 일정 범위를 잘라내는 방법입니다.
    시작 인덱스부터 끝 인덱스 전까지 잘라요.
    형식 또는 구문(syntax): 문자열[시작:끝]
    

    </> 예시코드:

    word = "ADGJMLMNFF" 
    print(word[0:2])  # 0번부터 1번까지 (2번은 포함하지 않음) 
    print(word[2:])   # 2번부터 끝까지
    print(word[::3])
    print(word[-3:])
    print(word[:5])
    

    🖨️ 출력결과:

    1️⃣ AD      
    2️⃣ GJMLMNFF
    3️⃣ AJMF    
    4️⃣ NFF     
    5️⃣ ADGJM
    

    ✅ 기준 문자열

    word = "ADGJMLMNFF"
    # 인덱스:   0 1 2 3 4 5 6 7 8 9
    # 문자:     A D G J M L M N F F
    

    🔍 해설: 1️⃣ print(word[0:2]) 출력: AD 의미: 0번부터 2번 앞까지, 즉 0번, 1번 인덱스 문자 추출 해설: A(0번), D(1번)를 잘라냅니다. 2번 인덱스(G)는 포함되지 않습니다. 2️⃣ print(word[2:]) 출력: GJMLMNFF 의미: 2번부터 끝까지 해설: G(2번)부터 마지막 문자 F(9번)까지 모두 출력됩니다. 3️⃣ print(word[::3]) 출력: AJMF 의미: 전체 범위에서 3칸씩 건너뛰며 출력 해설: 인덱스 0, 3, 6, 9의 문자가 출력됩니다:
    word[0] = A, word[3] = J, word[6] = M, word[9] = F 4️⃣ print(word[-3:]) 출력: NFF 의미: 뒤에서 3글자 해설: 음수 인덱스는 뒤에서 셉니다.
    word[-3] = N, word[-2] = F, word[-1] = F 5️⃣ print(word[:5]) 출력: ADGJM 의미: 0번부터 5번 앞까지, 즉 0~4번 문자 해설: A(0), D(1), G(2), J(3), M(4)까지 출력


    🔹 indexError (index out of range) 예외

    IndexError란? 파이썬에서 리스트, 문자열 등의 시퀀스 자료형에서 존재
    하지 않는 인덱스(위치)에 접근하려고 할 때 발생하는 오류입니다. 
    "index out of range"는 "인덱스가 범위를 벗어났다"는 의미입니다.
    

    🐣 쉽게 말하면: 책에서 페이지를 넘기는 것과 비슷합니다. 200페이지짜리 책의 300페이지를 보려고 하면 당연히 볼 수 없습니다. 마찬가지로 5글자 문자열의 10번째 글자를 요청하면 컴퓨터는 오류를 발생시킵니다.

    </> 예시코드: 문자열 인덱싱 오류

    이름 = "홍길동" print(이름[0]) # 첫 번째 글자 접근 
    print(이름[1]) # 두 번째 글자 접근 
    print(이름[2]) # 세 번째 글자 접근 
    print(이름[3]) # 네 번째 글자? - IndexError 발생!
    

    🖨️ 출력결과: TypeError 발생

    홍 
    길 
    동 
    Traceback (most recent call last): 
    	File "<stdin>", line 1, in <module> 
    IndexError: string index out of range
    

    🔍 해설: "홍길동"은 3글자이므로 인덱스는 0, 1, 2까지만 존재합니다. 인덱스 3에 접근하려고 하면 IndexError가 발생합니다.


    </> 예시코드: 음수 인덱스도 범위를 벗어날 수 있음

    단어 = "파이썬" 
    print(단어[-1]) # 마지막 글자 
    print(단어[-2]) # 마지막에서 두 번째 글자 
    print(단어[-4]) # 4번째 이전 글자? - IndexError 발생!
    

    🖨️ 출력결과

    썬 
    이
    Traceback (most recent call last): 
    	File "<stdin>", line 1, in <module> 
    IndexError: string index out of range
    

    🔍 해설: 음수 인덱스는 뒤에서부터 셉니다. "파이썬"은 3글자이므로 -1, -2, -3만 유효합니다. -4는 범위를 벗어납니다.


    ◽ IndexError 방지하기 (조건문으로)

    name = "홍길동"
    idx = int(input("몇 번째 글자를 보고 싶나요? (0부터 시작): "))
    
    if idx < len(name):
    	print("선택한 글자:", name[idx])
    else:
    	print("인덱스가 범위를 벗어났습니다.")
    

    ◽ IndexError 방지하기(예외처리로)

    name = "홍길동"
    idx = int(input("몇 번째 글자를 보고 싶나요? (0부터 시작): ")) -> int(3)"3"
    
    try:
        print("선택한 글자:", name[idx])
    except IndexError: # 내장 예외 클래스
        print("존재하지 않는 인덱스입니다.")
    

    ✅ 설명: try - except 구조

    try:
        # 오류가 발생할 수 있는 코드
    except 예외클래스:
        # 오류가 발생했을 때 실행되는 코드
    

    ◽ 예외처리 IndexError (index out of range) 리스트나 문자열처럼 순서가 있는 자료형에서, 존재하지 않는 인덱스를 사용하려고 할 때 발생하는 오류입니다. 즉, 범위를 벗어난 번호를 사용할 경우 나타나요.

    </> 예시코드: 존재하지 않는 인덱스를 참조하려고 하면 발생

    text = "Hi"
    print(text[3])   # 오류 발생!
    
    my_list = [10, 20, 30]
    print(my_list[3])  # 오류 발생!
    

    🖨️ 출력결과: ❌오류 메시지

    IndexError: string index out of range
    

    🔍 해설: "Hi"는 인덱스가 0, 1까지만 있는데 3을 요청해서 오류 발생 [10, 20, 30]도 인덱스가 0, 1, 2까지만 있음

    # 예외처리
    text = "Hi"
    try:
    	print(text[3])
    except IndexError:
    	print("문자열 인덱스 범위를 벗어났습니다.")
    
    # 예외처리
    my_list = [10, 20, 30]
    print(my_list[3]) 
    
    try:
    	print(my_list[3])
    except IndexError:
    	print("리스트 인덱스 범위를 벗었났습니다.")
    

    문자열 길이 구하기 — len( ) 함수

    🔹 len( ) 함수란?

    리스트, 문자열, 튜플 같은 반복 가능한 객체(iterable object)의  
    요소 개수(길이)를 구하는 함수입니다.
    문자열이나 리스트처럼 여러 개로 이루어진 데이터를 다룰 때,  
    "총 몇 개나 있어?"를 알고 싶을 때 사용하는 함수예요.
    

    🧐 문자열에서 글자 수 세기 띄어쓰기, 특수문자, 줄바꿈 문자(\n)도 모두 하나의 글자로 세어집니다.

    </> 예시코드1 : 기본 문자열 길이 구하기

    text = "Hello, Python!"
    print(len(text))
    

    🖨️ 출력결과:

    14
    

    🔍 해설: "Hello, Python!"은 알파벳, 쉼표, 공백(스페이스), 느낌표까지 모두 글자 하나하나로 세어져서 총 14개가 됩니다.

    이 문자열 "Hello, Python!"을 한 글자씩 세보면:

    문자 H e l l o , (공백) P y t h o n !
    번호 1 2 3 4 5 6 7 8 9 10 11 12 13 14

    </> 예시코드2 : 줄바꿈 문자 \n 포함

    text = "Hello\nPython"
    print(len(text))  
    

    🖨️ 출력결과:

    12
    

    </> 예시코드3 : 공백(스페이스) 포함

    text = "I love you"
    print(len(text)) 
    

    🖨️ 출력결과:

    10
    

    📝 문제1] 문자열 구성하기 (연결 + 반복 + 인덱싱)

    1. Hi와 !느낌표를 붙여서 3번 출력하게 만드세요.
    2. 인덱싱으로 5번째 문자를 출력하세요.

    ✅ 정답:

    word = "Hi"
    result = (word + "!") * 3
    
    print(result) # Hi!Hi!Hi!
    

    📝 문제2] 슬라이싱과 연결연산자 문제 글자를 보고 출력 결과처럼 나오게 하세요. text = "PythonProgramming"

    🖨️ 출력결과:

    Py_tho_nProgra_mmin_g
    

    ✅ 정답:

    text = "PythonProgramming"
    
    result = text[0:2] + "_" + text[2:5]  + "_" + text[:] + "_" + text[:] + "_" +  text[16]
    

    📝 문제3] 중첩 인덱싱과 슬라이싱 msg = "BeautifulCode" 위의 글자중 ful만 출력되게 코딩하세요.

    ✅ 정답:

    msg = "BeautifulCode"
    print(msg[6] + msg[7] + msg[8])
    

    📝 문제4] 문자열 거꾸로 출력하세요 text = "Python"

    ✅ 정답:

    text = "Python"
    print(text[::-1])
    

    📝 문제5] 주민등록번호를 마스킹 처리하여 결과와 같이 출력하세요. ssn = "900101-1234567"

    🖨️ 출력결과:

    결과: 900101-*******
    

    ✅ 정답:

    print(ssn[:7] + "*******")
    

    💭직접 풀어보세요.

    📝 문제1] 문자열 생성과 이스케이프 문자 다음 문장이 출력되도록 문자열을 이스케이프 문자를 사용하여 작성하세요.

    🖨️ 출력결과:

    그는 말했다: "나는 파이썬을 좋아해요!"
    

    ✅ 정답:

    text = "그는 말했다: \"나는 파이썬을 좋아해요!\""
    print(text)
    

    📝 문제2] 문자열 길이와 슬라이싱 다음 문자열에서 문자열의 마지막 3글자만 추출하여 출력하세요.
    단, len() 함수와 슬라이싱을 함께 사용해야 합니다.

    text = "DataScience"
    

    🖨️ 출력결과:

    nce
    

    ✅ 정답:

    text = "DataScience"
    print(text[len(text)-3:])
    

    📘 코드설명: len(text) 로 전체 길이를 구함 (11) -> 인덱싱 하나더해서 12 text[9:] 과 같으며 뒤에서 세글자만 출력됨


    📝 문제3] 문자열 연산자 응용

    다음 코드가 "HiHiHi~" 를 출력하도록 +* 연산자를 조합하여 완성하세요.

    word = "Hi" 
    print(______________________)  # ← 이 부분을 완성
    

    🖨️ 출력결과:

    HiHiHi~
    

    ✅ 정답:

    word = "Hi" 
    print(word * 3 + "~")
    

    📝 문제4] 인덱싱과 예외 처리: 사용자가 입력한 인덱스로 문자열에서 문자를 출력합니다.
    범위를 벗어나면 에러 대신 안내 메시지를 출력할수 있게 예외 처리하세요.

    word = "python" 
    idx = int(input("인덱스를 입력하세요: "))
    

    🖨️ 출력결과 (예: index 입력이 10일 경우):

    인덱스가 범위를 벗어났습니다.
    

    ✅ 정답:

    word = "python" 
    idx = int(input("인덱스를 입력하세요:(0부터 숫자를 입력해주세요) "))
    
    try:
    	print("선택한 문자",word[idx] )
    except IndexError:
    	print("인덱스 범위에서 벗어났습니다.")
    

    🧾보충설명: except를 단독으로 사용하는 것은 파이썬에서 권장하지 않는 예외 처리입니다. except 블록만 사용하면 모든 예외를 무차별적으로 잡아내기 때문에 다음과 같은 단점이 있습니다. 1. 모든 종류의 예외(IndexError, ZeroDivisionError, TypeError)를 구분없이 동일하게 처리합니다. 2. 실제 문제의 원인을 파악하기 어렵습니다. 3. 예상치 못한 심각한 오류도 조용히 넘어가 버려 프로그램이 잘못된 상태에서 계속 실행될수 있습니다. 4. 디버깅이 매우 어려워집니다.


    📝 문제5] 줄바꿈 없는 출력 다음 문장을 줄바꿈 없이 한 줄로 출력하도록 코드를 작성하세요. "Life is short. Python is fun."

    </> 문제코드:

    Life is short. 
    Python is fun.
    

    ✅ 정답:

    line = "Life is short." + "Python is fun."
    print(line)
    
    line = (
    	"Life is short." 
    	"Python is fun."
    )
    print(line)
    
    TOP
    preload preload